numbers = list(map( int , input().split()))
columns = numbers[0]
rows = numbers[1]
counter = -1
data = {}
stop = 0
for i in range(0 , columns) :
x = input()
g = "not"
s = 'not'
count = 0
for j in range (0 , rows) :
if x[j] == "S" :
if g == "found" :
counter = count + 1 ;
if not f"{counter}" in data :
data[f"{counter}"] = 1
else :
stop = 1
break
elif x[j] == 'G' :
g = 'found'
count = 0
else :
count += 1
print(-1 if len(data) == 0 or stop == 1 else len(data))
#include<bits/stdc++.h>
using namespace std;
int main()
{
int n,m,c,d;
char a[1001][1001];
cin>>n>>m;
for(int i=0;i<n;i++)
for(int j=0;j<m;j++)
cin>>a[i][j];
for(int i=0;i<n;i++)
{
bool G=0;
for(int j=0;j<m;j++)
{
if(a[i][j]=='S'&&G==0)
{
cout<<-1<<endl;
return 0;
}
else if(a[i][j]=='G')
G=1;
}
}
set<int>s;
for(int i=0;i<n;i++)
{
for(int j=0;j<m;j++)
{
if(a[i][j]=='S')
c=j;
else if(a[i][j]=='G')
d=j;
}
s.insert(c-d);
}
cout<<s.size()<<endl;
return 0;
}
/**
*/
169B - Replacing Digits | 171D - Broken checker |
380C - Sereja and Brackets | 1281B - Azamon Web Services |
1702A - Round Down the Price | 1681C - Double Sort |
12A - Super Agent | 1709A - Three Doors |
1680C - Binary String | 1684B - Z mod X = C |
1003A - Polycarp's Pockets | 1691B - Shoe Shuffling |
1706A - Another String Minimization Problem | 1695B - Circle Game |
1702B - Polycarp Writes a String from Memory | 1701A - Grass Field |
489C - Given Length and Sum of Digits | 886B - Vlad and Cafes |
915A - Garden | 356A - Knight Tournament |
1330A - Dreamoon and Ranking Collection | 1692B - All Distinct |
1156C - Match Points | 1675A - Food for Animals |
1328C - Ternary XOR | 1689A - Lex String |
1708B - Difference of GCDs | 863A - Quasi-palindrome |
1478A - Nezzar and Colorful Balls | 1581B - Diameter of Graph |